package city.spring.modules.cardinfo.service;

import city.spring.modules.cardinfo.entity.CardNumberEntity;
import city.spring.modules.cardinfo.vo.CardNumberEntityVO;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Service：
 *
 * @author panxm
 * @date 2020-05-19 10:34:16
 */
public interface CardNumberService extends IService<CardNumberEntity> {
    String CACHE_NAME = "card_elder";

    /**
     * 业务处理：保存一个 <strong></strong>
     *
     * @param entity
     */
    void saveCardNumber(CardNumberEntity entity);

    /**
     * 业务处理：修改一个 <strong></strong>
     *
     * @param entity
     */
    void updateCardNumber(CardNumberEntity entity);

    // 更新物理卡号
    void updatePhysics(CardNumberEntity entity);

    /**
     * 业务处理：删除一个 <strong></strong>
     *
     * @param primaryKey 主键ID
     */
    void deleteCardNumber(String primaryKey);

    /**
     * 业务处理：删除多个 <strong></strong>
     *
     * @param primaryKeys 主键ID列表
     */
    void deleteCardNumber(List<String> primaryKeys);

    /**
     * 通过卡号获取一卡通
     *
     * @param memberCard
     */
    CardNumberEntity getCardNumber(String memberCard);

    /**
     * 分页获取的卡片信息
     *
     * @param page    分页对象
     * @param wrapper 查询对象
     * @return 卡片信息
     */
    IPage<CardNumberEntityVO> listPage(Page<? extends CardNumberEntity> page, @Param(Constants.WRAPPER) Wrapper<? extends CardNumberEntity> wrapper);

    /**
     * 老人类型：预存余额小于0的记录
     *
     * @param page    分页对象
     * @param wrapper 查询对象
     * @return 预存余额小于0的记录
     */
    IPage<CardNumberEntityVO> oldListPage(Page<? extends CardNumberEntity> page, @Param(Constants.WRAPPER) Wrapper<? extends CardNumberEntity> wrapper);

    IPage<CardNumberEntityVO> staffListPage(Page<? extends CardNumberEntity> page, @Param(Constants.WRAPPER) Wrapper<? extends CardNumberEntity> wrapper);

    /**
     * 根据人员id找对应的卡片信息记录
     */
    CardNumberEntityVO getByPersonId(String personId);

    /**
     * 老人的卡片信息列表
     *
     * @param page
     * @param wrapper
     * @return
     */
    IPage<CardNumberEntityVO> oldcardInfo(Page<? extends CardNumberEntity> page, @Param(Constants.WRAPPER) Wrapper<? extends CardNumberEntity> wrapper);

}
